defmodule EliPhxPlay.Repo.Migrations.CreateUsers do
  use Ecto.Migration
  # 用户迁移表
  def change do
    #创建用户表，用于存储基础信息
    create table(:users, primary_key: false) do
      #用户唯一标识符，使用UUID格式
      add :user_id, :binary_id, primary_key: true, comment: "用户ID"
      #用户登录账号，必填且唯一
      add :account, :string, null: false, comment: "用户账号"
      #用户登录密码，必填
      add :password, :string, null: false, comment: "用户密码"
      #用户昵称，必填
      add :nickname, :string, null: false, comment: "用户昵称"
      #用户头像，可选
      add :avatar_url, :string, comment: "用户头像图片链接"
      #用户可用状态，必填，默认为可用active(正常)、inactive(未激活)、suspended(暂停)、banned(封禁)、deleted(软删除)
      add :status, :string, null: false, default: "active", comment: "用户状态: active/inactive/suspended/banned/deleted"
      # 用户被封禁或暂停的到期时间，可选
      add :status_until, :naive_datetime, comment: "状态到期时间(用于暂停/封禁)"
      #自动添加创建时间(inserted_at)和更新时间(updated_at)
      timestamps()
  end
  #账号创建唯一索引，提高查询效率
  create unique_index(:users, [:account],comment: "用户账号唯一索引")
  #为昵称字段创建普通索引
  create index(:users, [:nickname], comment: "用户昵称索引")
end
end
